package aplicaciones;

import commons.IAplicacionLocal;
import commons.IAplicacionRemota;

public class EsPrimo implements IAplicacionLocal
{
	private final static String[] PARAMS = new String[]{ "int numero" };
	private int puerto;
	private String nombre;
	private String[] parametros;
	
	public String darNombre( )
	{
		return nombre;
	}
	
	public int darPuerto( )
	{
		return puerto;
	}
	
	public String[] darParametros( )
	{
		return PARAMS;
	}
	
	public String usarAplicacion( String[] args ) 
	{
		try
		{
			int n = Integer.parseInt( args[0] );
			return isPrime( n ) ? "Es primo" : "No es primo";
		}
		catch( NumberFormatException e )
		{
			return "Numero invalido";
		}
		catch( Exception e )
		{
			return "Error fatal: " + e.getMessage();
		}
	}

	public static boolean isPrime(long n) 
	{
		boolean prime = true;
		for (long i = 3; i <= Math.sqrt(n); i += 2)
			if (n % i == 0) 
			{
				prime = false;
				break;
			}
		
		if (( n%2 !=0 && prime && n > 2) || n == 2) 
		{
			return true;
		} else {
			return false;
		}
	}

	@Override
	public void setNombre(String nombre) 
	{
		this.nombre = nombre;
	}

	@Override
	public void setPuerto(int puerto) 
	{
		this.puerto = puerto;
	}

}
